package me.itsoo.artemis.framework.repository.interceptor;

import me.itsoo.artemis.framework.repository.executor.SqlExecutor;
import me.itsoo.artemis.framework.repository.mapper.MapperDefinition;

/**
 * SqlInterceptor
 *
 * @author zxy
 * @version 0.0.1
 * @since 2023/5/15
 */
public interface SqlInterceptor {

    /**
     * 执行拦截器方法
     *
     * @param sqlExecutor SqlExecutor
     * @param md          MapperDefinition
     * @param invocation  Invocation
     * @return T
     */
    <T> T execute(SqlExecutor sqlExecutor, MapperDefinition md, Invocation invocation);

}
